உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP) பற்றிய ஒரு ஆழமான பார்வை மற்றும் ஜாவாஸ்கிரிப்ட் அடிப்படையிலான தாக்குதல்களைத் தடுப்பதில் அதன் முக்கிய பங்கு. XSS மற்றும் பிற பாதிப்புகளிலிருந்து உங்கள் வலைப் பயன்பாடுகளைப் பாதுகாக்கவும். நடைமுறைச் செயலாக்க உத்திகள் மற்றும் உலகளாவிய பாதுகாப்பிற்கான சிறந்த நடைமுறைகளைக் கற்றுக்கொள்ளுங்கள்.
வலைப் பாதுகாப்பு ஹெடர்கள்: உள்ளடக்கப் பாதுகாப்பு கொள்கை மற்றும் ஜாவாஸ்கிரிப்ட் செயலாக்கம்
இன்றைய சிக்கலான டிஜிட்டல் உலகில், வலைப் பயன்பாட்டுப் பாதுகாப்பு மிக முக்கியமானது. பல்வேறு தாக்குதல்களுக்கு எதிராக, குறிப்பாக கிராஸ்-சைட் ஸ்கிரிப்டிங் (XSS) க்கு எதிராக மிகவும் பயனுள்ள பாதுகாப்புகளில் ஒன்று வலைப் பாதுகாப்பு ஹெடர்களைப் பயன்படுத்துவதாகும். இவற்றில், உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP) ஒரு குறிப்பிட்ட பக்கத்திற்கு உலாவியை எந்த ஆதாரங்களை ஏற்ற அனுமதிக்க வேண்டும் என்பதைக் கட்டுப்படுத்துவதற்கான ஒரு சக்திவாய்ந்த வழிமுறையாக விளங்குகிறது. இந்த கட்டுரை உங்கள் வலைப் பயன்பாடுகளையும் பயனர்களையும் பாதுகாக்க CSP-ஐ திறம்படப் புரிந்துகொள்வதற்கும் செயல்படுத்துவதற்கும் ஒரு விரிவான வழிகாட்டியை வழங்குகிறது.
வலைப் பாதுகாப்பு ஹெடர்களைப் புரிந்துகொள்ளுதல்
வலைப் பாதுகாப்பு ஹெடர்கள் என்பவை HTTP ரெஸ்பான்ஸ் ஹெடர்கள் ஆகும், அவை சில வகையான உள்ளடக்கங்களைக் கையாளும்போது உலாவி எவ்வாறு நடந்துகொள்ள வேண்டும் என்பது குறித்த வழிமுறைகளை வழங்குகின்றன. அவை ஆழமான பாதுகாப்பு உத்தியின் ஒரு முக்கிய பகுதியாகும், அபாயங்களைக் குறைக்க மற்ற பாதுகாப்பு நடவடிக்கைகளுடன் இணைந்து செயல்படுகின்றன.
மிகவும் பொதுவாகப் பயன்படுத்தப்படும் வலைப் பாதுகாப்பு ஹெடர்களில் சில:
- உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP): பயனர் முகவர் எந்த ஆதாரங்களை ஏற்ற அனுமதிக்கப்படுகிறது என்பதைக் கட்டுப்படுத்துகிறது.
- HTTP ஸ்ட்ரிக்ட் டிரான்ஸ்போர்ட் செக்யூரிட்டி (HSTS): உலாவிகளை HTTPS பயன்படுத்த கட்டாயப்படுத்துகிறது.
- X-ஃபிரேம்-ஆப்ஷன்ஸ்: கிளிக்ஜாக்கிங் தாக்குதல்களுக்கு எதிராகப் பாதுகாக்கிறது.
- X-கண்டென்ட்-டைப்-ஆப்ஷன்ஸ்: MIME-ஸ்னிஃபிங் பாதிப்புகளைத் தடுக்கிறது.
- ரெஃபரர்-பாலிசி: கோரிக்கைகளுடன் எவ்வளவு ரெஃபரர் தகவல் சேர்க்கப்பட வேண்டும் என்பதைக் கட்டுப்படுத்துகிறது.
- பெர்மிஷன்ஸ்-பாலிசி (முன்னர் ஃபீச்சர்-பாலிசி): உலாவி அம்சங்கள் மீது நுணுக்கமான கட்டுப்பாட்டை அனுமதிக்கிறது.
இந்தக் கட்டுரை முதன்மையாக உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP) மற்றும் ஜாவாஸ்கிரிப்ட் செயலாக்கத்தில் அதன் தாக்கம் ஆகியவற்றில் கவனம் செலுத்துகிறது.
உள்ளடக்கப் பாதுகாப்பு கொள்கை (CSP) என்றால் என்ன?
CSP என்பது ஒரு HTTP ரெஸ்பான்ஸ் ஹெடர் ஆகும், இது உலாவி எந்தெந்த மூலங்களிலிருந்து ஆதாரங்களை ஏற்றுவதற்கு அனுமதிக்கப்படுகிறது என்பதற்கான ஒரு ஏற்புப் பட்டியலை (whitelist) வரையறுக்க உங்களை அனுமதிக்கிறது. இதில் ஜாவாஸ்கிரிப்ட், CSS, படங்கள், எழுத்துருக்கள் மற்றும் பிற சொத்துக்கள் அடங்கும். இந்த நம்பகமான ஆதாரங்களை வெளிப்படையாக வரையறுப்பதன் மூலம், உங்கள் இணையதளத்தில் தீங்கிழைக்கும் ஸ்கிரிப்ட்கள் செலுத்தப்பட்டு உங்கள் பயனர்களின் உலாவிகளின் சூழலில் செயல்படுத்தப்படும் XSS தாக்குதல்களின் அபாயத்தை நீங்கள் கணிசமாகக் குறைக்கலாம்.
CSP-ஐ உங்கள் உலாவிக்கான ஃபயர்வால் என்று நினைத்துப் பாருங்கள், ஆனால் நெட்வொர்க் போக்குவரத்தைத் தடுப்பதற்குப் பதிலாக, அது நம்பத்தகாத குறியீட்டின் செயலாக்கத்தைத் தடுக்கிறது.
ஜாவாஸ்கிரிப்ட் செயலாக்கத்திற்கு CSP ஏன் முக்கியமானது?
ஜாவாஸ்கிரிப்ட் என்பது ஒரு சக்திவாய்ந்த மொழியாகும், இது டைனமிக் மற்றும் ஊடாடும் வலை அனுபவங்களை உருவாக்கப் பயன்படுகிறது. இருப்பினும், அதன் நெகிழ்வுத்தன்மை அதைத் தாக்குபவர்களுக்கு ஒரு முக்கிய இலக்காகவும் ஆக்குகிறது. XSS தாக்குதல்கள் பெரும்பாலும் தீங்கிழைக்கும் ஜாவாஸ்கிரிப்ட் குறியீட்டை ஒரு இணையதளத்தில் செலுத்துவதை உள்ளடக்கியது, இது பின்னர் பயனர் சான்றுகளைத் திருட, பயனர்களை ஃபிஷிங் தளங்களுக்குத் திருப்பிவிட, அல்லது இணையதளத்தை சிதைக்கப் பயன்படுத்தப்படலாம்.
CSP ஜாவாஸ்கிரிப்ட் ஏற்றப்பட்டு செயல்படுத்தப்படக்கூடிய மூலங்களைக் கட்டுப்படுத்துவதன் மூலம் இந்தத் தாக்குதல்களைத் திறம்படத் தடுக்க முடியும். இயல்பாக, CSP அனைத்து இன்லைன் ஜாவாஸ்கிரிப்ட் (<script> குறிச்சொற்களுக்குள் உள்ள குறியீடு) மற்றும் வெளிப்புற டொமைன்களிலிருந்து ஏற்றப்பட்ட ஜாவாஸ்கிரிப்டைத் தடுக்கிறது. பின்னர் நீங்கள் CSP டைரக்டிவ்களைப் பயன்படுத்தி நம்பகமான மூலங்களைத் தேர்ந்தெடுத்து இயக்கலாம்.
CSP டைரக்டிவ்கள்: உங்கள் கொள்கையின் கட்டுமானத் தொகுதிகள்
CSP டைரக்டிவ்கள் எந்த வகையான ஆதாரங்களை ஏற்ற அனுமதிக்கப்படுகிறது மற்றும் அவை எந்த மூலங்களிலிருந்து ஏற்றப்படலாம் என்பதை வரையறுக்கின்றன. இங்கே சில மிக முக்கியமான டைரக்டிவ்கள் உள்ளன:
default-src: மற்ற ஃபெட்ச் டைரக்டிவ்களுக்கு ஒரு பின்னடைவாக செயல்படுகிறது. ஒரு குறிப்பிட்ட டைரக்டிவ் வரையறுக்கப்படவில்லை என்றால்,default-srcபயன்படுத்தப்படுகிறது.script-src: ஜாவாஸ்கிரிப்ட் குறியீட்டிற்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.style-src: CSS ஸ்டைல்ஷீட்களுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.img-src: படங்களுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.font-src: எழுத்துருக்களுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.media-src: ஆடியோ மற்றும் வீடியோ கோப்புகளுக்கான அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.object-src: செருகுநிரல்களுக்கான (எ.கா., ஃப்ளாஷ்) அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.frame-src: பிரேம்களுக்கான (<frame>,<iframe>) அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.connect-src: நெட்வொர்க் கோரிக்கைகளுக்கான (எ.கா., XMLHttpRequest, Fetch API, WebSockets) அனுமதிக்கப்பட்ட மூலங்களைக் குறிப்பிடுகிறது.base-uri: ஒரு ஆவணத்தின்<base>உறுப்பில் பயன்படுத்தக்கூடிய URL-களைக் கட்டுப்படுத்துகிறது.form-action: படிவங்கள் சமர்ப்பிக்கக்கூடிய URL-களைக் கட்டுப்படுத்துகிறது.upgrade-insecure-requests: அனைத்து பாதுகாப்பற்ற URL-களையும் (HTTP) பாதுகாப்பான URL-களுக்கு (HTTPS) மேம்படுத்துமாறு உலாவிக்கு அறிவுறுத்துகிறது.block-all-mixed-content: பக்கம் HTTPS வழியாக ஏற்றப்படும்போது HTTP ஐப் பயன்படுத்தி எந்தவொரு ஆதாரத்தையும் ஏற்றுவதிலிருந்து உலாவியைத் தடுக்கிறது.
ஒவ்வொரு டைரக்டிவும் பல்வேறு மூல வெளிப்பாடுகளை ஏற்கலாம், அவற்றுள்:
*: எந்தவொரு மூலத்திலிருந்தும் ஆதாரங்களை அனுமதிக்கிறது (பொதுவாகப் பரிந்துரைக்கப்படுவதில்லை).'self': ஆவணத்தின் அதே மூலத்திலிருந்து (ஸ்கீம், ஹோஸ்ட், மற்றும் போர்ட்) ஆதாரங்களை அனுமதிக்கிறது.'none': எல்லா மூலங்களிலிருந்தும் ஆதாரங்களை அனுமதிக்காது.'unsafe-inline': இன்லைன் ஜாவாஸ்கிரிப்ட் மற்றும் CSS பயன்பாட்டை அனுமதிக்கிறது (கடுமையாக ஊக்கவிக்கப்படவில்லை).'unsafe-eval':eval()மற்றும் தொடர்புடைய செயல்பாடுகளின் பயன்பாட்டை அனுமதிக்கிறது (கடுமையாக ஊக்கவிக்கப்படவில்லை).'unsafe-hashes': குறிப்பிட்ட இன்லைன் நிகழ்வு கையாளிகளை அவற்றின் SHA256, SHA384, அல்லது SHA512 ஹாஷ் அடிப்படையில் அனுமதிக்கிறது (கவனத்துடன் பயன்படுத்தவும்).data:: data: URI-களை அனுமதிக்கிறது (எ.கா., பேஸ்64 ஆக குறியாக்கம் செய்யப்பட்ட இன்லைன் படங்கள்).- https://example.com: குறிப்பிட்ட டொமைனிலிருந்து (மற்றும் விருப்பமாக போர்ட்) HTTPS வழியாக ஆதாரங்களை அனுமதிக்கிறது.
- *.example.com: example.com இன் எந்தவொரு துணை டொமைனிலிருந்தும் ஆதாரங்களை அனுமதிக்கிறது.
- nonce-{random-value}: பொருந்தக்கூடிய நான்ஸ் பண்புக்கூறு கொண்ட குறிப்பிட்ட இன்லைன் ஸ்கிரிப்ட்கள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது (இன்லைன் குறியீட்டிற்குப் பரிந்துரைக்கப்படுகிறது).
- sha256-{hash-value}: பொருந்தக்கூடிய SHA256 ஹாஷ் கொண்ட குறிப்பிட்ட இன்லைன் ஸ்கிரிப்ட்கள் அல்லது ஸ்டைல்களை அனுமதிக்கிறது (நான்ஸ்களுக்கு மாற்று).
CSP-ஐ செயல்படுத்துதல்: நடைமுறை எடுத்துக்காட்டுகள்
CSP-ஐ செயல்படுத்த இரண்டு முதன்மை வழிகள் உள்ளன:
- HTTP ஹெடர்: HTTP ரெஸ்பான்ஸில்
Content-Security-Policyஹெடரை அனுப்புதல். இது விரும்பத்தக்க முறையாகும். <meta>டேக்: HTML ஆவணத்தின்<head>பிரிவில்<meta>டேக்கைப் பயன்படுத்துதல். இந்த முறைக்கு வரம்புகள் உள்ளன மற்றும் பொதுவாக பரிந்துரைக்கப்படுவதில்லை.
HTTP ஹெடரைப் பயன்படுத்துதல்
CSP ஹெடரை அமைக்க, உங்கள் வலை சேவையகத்தை உள்ளமைக்க வேண்டும். உங்கள் சேவையகத்தைப் பொறுத்து (எ.கா., அப்பாச்சி, நிக்ஸ், IIS) சரியான படிகள் மாறுபடும்.
CSP ஹெடர்களின் சில எடுத்துக்காட்டுகள் இங்கே:
அடிப்படை CSP
இந்தக் கொள்கை ஒரே மூலத்திலிருந்து வரும் ஆதாரங்களை மட்டுமே அனுமதிக்கிறது:
Content-Security-Policy: default-src 'self';
குறிப்பிட்ட டொமைன்களிலிருந்து ஆதாரங்களை அனுமதித்தல்
இந்தக் கொள்கை https://cdn.example.com இலிருந்து ஜாவாஸ்கிரிப்ட்டையும், https://images.example.net இலிருந்து படங்களையும் அனுமதிக்கிறது:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; img-src 'self' https://images.example.net;
இன்லைன் ஸ்கிரிப்ட்களுக்கு நான்ஸ்களைப் பயன்படுத்துதல்
இந்தக் கொள்கை பொருந்தக்கூடிய நான்ஸ் பண்புக்கூறு கொண்ட இன்லைன் ஸ்கிரிப்ட்களை அனுமதிக்கிறது:
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-rAnd0mN0nc3';
உங்கள் HTML இல்:
<script nonce="rAnd0mN0nc3">
// Your inline script
</script>
குறிப்பு: தாக்குபவர்கள் CSP-ஐத் தவிர்ப்பதைத் தடுக்க ஒவ்வொரு கோரிக்கைக்கும் நான்ஸ் மதிப்பு தோராயமாக உருவாக்கப்பட வேண்டும்.
இன்லைன் ஸ்கிரிப்ட்களுக்கு ஹாஷ்களைப் பயன்படுத்துதல்
இந்தக் கொள்கை குறிப்பிட்ட இன்லைன் ஸ்கிரிப்ட்களை அவற்றின் SHA256 ஹாஷ் அடிப்படையில் அனுமதிக்கிறது:
Content-Security-Policy: default-src 'self'; script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng=';
SHA256 ஹாஷை உருவாக்க, நீங்கள் பல்வேறு ஆன்லைன் கருவிகள் அல்லது கட்டளை-வரி பயன்பாடுகளைப் பயன்படுத்தலாம் (எ.கா., openssl dgst -sha256 -binary input.js | openssl base64).
<meta> டேக்கைப் பயன்படுத்துதல்
சிக்கலான கொள்கைகளுக்குப் பரிந்துரைக்கப்படவில்லை என்றாலும், ஒரு அடிப்படை CSP-ஐ அமைக்க <meta> டேக் பயன்படுத்தப்படலாம். உதாரணமாக:
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
<meta> டேக்கின் வரம்புகள்:
report-uriடைரக்டிவைக் குறிப்பிடப் பயன்படுத்த முடியாது.- HTTP ஹெடரைப் போல பரவலாக ஆதரிக்கப்படவில்லை.
- சிக்கலான கொள்கைகளுக்கு குறைவான நெகிழ்வுத்தன்மை மற்றும் நிர்வகிக்க கடினமானது.
CSP ரிப்போர்ட்-ஒன்லி பயன்முறை
ஒரு CSP-ஐச் செயல்படுத்துவதற்கு முன்பு, Content-Security-Policy-Report-Only ஹெடரைப் பயன்படுத்த மிகவும் பரிந்துரைக்கப்படுகிறது. இது எந்த ஆதாரங்களையும் தடுக்காமல் உங்கள் கொள்கையின் தாக்கத்தைக் கண்காணிக்க உங்களை அனுமதிக்கிறது. உலாவி எந்த மீறல்களையும் ஒரு குறிப்பிட்ட URL-க்குத் தெரிவிக்கும், இது உங்கள் கொள்கையை உற்பத்திக்கு அனுப்புவதற்கு முன்பு சரிசெய்ய உங்களை அனுமதிக்கிறது.
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report;
CSP அறிக்கைகளைப் பெறவும் செயலாக்கவும் நீங்கள் ஒரு சர்வர்-பக்க இறுதிப்புள்ளியை (எ.கா., /csp-report) உள்ளமைக்க வேண்டும். இந்த அறிக்கைகள் பொதுவாக மீறப்பட்ட டைரக்டிவ், தடுக்கப்பட்ட URI, மற்றும் பிற தொடர்புடைய விவரங்களைக் கொண்ட JSON பொருட்களாகும்.
பொதுவான CSP தவறுகளும் அவற்றைத் தவிர்ப்பதற்கான வழிகளும்
CSP-ஐச் செயல்படுத்துவது சவாலானது, மேலும் உங்கள் பாதுகாப்பைப் பலவீனப்படுத்தக்கூடிய அல்லது உங்கள் இணையதளத்தை உடைக்கக்கூடிய தவறுகளைச் செய்வது எளிது. தவிர்க்க வேண்டிய சில பொதுவான ஆபத்துகள் இங்கே:
'unsafe-inline'மற்றும்'unsafe-eval'பயன்படுத்துதல்: இந்த டைரக்டிவ்கள் CSP வழங்கும் பாதுகாப்புகளை முடக்குகின்றன மற்றும் முடிந்தவரை தவிர்க்கப்பட வேண்டும். இன்லைன் ஸ்கிரிப்ட்களுக்கு நான்ஸ்கள் அல்லது ஹாஷ்களைப் பயன்படுத்தவும் மற்றும்eval()பயன்படுத்துவதைத் தவிர்க்கவும்.*பயன்படுத்துதல்: எந்தவொரு மூலத்திலிருந்தும் ஆதாரங்களை அனுமதிப்பது CSP-இன் நோக்கத்தை முறியடிக்கிறது. உங்கள் கொள்கையை வரையறுக்கும்போது முடிந்தவரை துல்லியமாக இருங்கள்.- முழுமையாகச் சோதிக்காமல் இருப்பது: உங்கள் CSP-ஐச் செயல்படுத்துவதற்கு முன்பு எப்போதும் ரிப்போர்ட்-ஒன்லி பயன்முறையில் சோதிக்கவும். அறிக்கைகளைக் கண்காணித்து, தேவைக்கேற்ப உங்கள் கொள்கையைச் சரிசெய்யவும்.
report-uri-ஐத் தவறாக உள்ளமைத்தல்: உங்கள் report-uri இறுதிப்புள்ளி CSP அறிக்கைகளைப் பெறவும் செயலாக்கவும் சரியாக உள்ளமைக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்.- உங்கள் CSP-ஐப் புதுப்பிக்கத் தவறுதல்: உங்கள் இணையதளம் உருவாகும்போது, உங்கள் ஆதார சார்புகளில் ஏற்படும் மாற்றங்களைப் பிரதிபலிக்க உங்கள் CSP புதுப்பிக்கப்பட வேண்டியிருக்கலாம்.
- அதிகப்படியான கட்டுப்பாடுள்ள கொள்கைகள்: மிகவும் கட்டுப்பாடுள்ள கொள்கைகள் உங்கள் இணையதளத்தை உடைத்து பயனர்களை வெறுப்படையச் செய்யலாம். பாதுகாப்பு மற்றும் பயன்பாட்டிற்கு இடையில் ஒரு சமநிலையைக் கண்டறியவும்.
CSP மற்றும் மூன்றாம் தரப்பு நூலகங்கள்
பல இணையதளங்கள் CDN-கள், பகுப்பாய்வு வழங்குநர்கள், மற்றும் சமூக ஊடக விட்ஜெட்டுகள் போன்ற மூன்றாம் தரப்பு நூலகங்கள் மற்றும் சேவைகளை நம்பியுள்ளன. CSP-ஐச் செயல்படுத்தும்போது, இந்த சார்புகளைக் கருத்தில் கொண்டு உங்கள் கொள்கை அவற்றைச் சரியாக ஆதாரங்களை ஏற்ற அனுமதிக்கிறதா என்பதை உறுதி செய்வது முக்கியம்.
மூன்றாம் தரப்பு நூலகங்களைக் கையாள்வதற்கான சில உத்திகள் இங்கே:
- நம்பகமான மூன்றாம் தரப்பு வழங்குநர்களின் டொமைன்களை வெளிப்படையாக ஏற்புப் பட்டியலில் சேர்க்கவும்: உதாரணமாக, நீங்கள் ஒரு CDN-லிருந்து jQuery-ஐப் பயன்படுத்தினால், CDN-இன் டொமைனை உங்கள்
script-srcடைரக்டிவில் சேர்க்கவும். - துணை ஆதார ஒருமைப்பாட்டை (SRI) பயன்படுத்தவும்: மூன்றாம் தரப்பு மூலங்களிலிருந்து நீங்கள் ஏற்றும் கோப்புகள் சேதப்படுத்தப்படவில்லை என்பதைச் சரிபார்க்க SRI உங்களை அனுமதிக்கிறது. SRI-ஐப் பயன்படுத்த, நீங்கள் கோப்பின் ஒரு கிரிப்டோகிராஃபிக் ஹாஷை உருவாக்கி அதை
<script>அல்லது<link>டேக்கில் சேர்க்க வேண்டும். - உங்கள் சொந்த சேவையகத்தில் மூன்றாம் தரப்பு நூலகங்களை ஹோஸ்ட் செய்வதைக் கருத்தில் கொள்ளவும்: இது உங்களுக்கு ஆதாரங்கள் மீது அதிகக் கட்டுப்பாட்டைக் கொடுக்கிறது மற்றும் வெளிப்புற வழங்குநர்கள் மீதான உங்கள் சார்பைக் குறைக்கிறது.
SRI-ஐப் பயன்படுத்தும் எடுத்துக்காட்டு:
<script
src="https://cdn.example.com/jquery.min.js"
integrity="sha384-vtXRMe3mGCkKsTB9UMvnoknreNzcMRujMQFFSQhtI2zxLlClmHsfq9em6JzhbqQ"
crossorigin="anonymous"></script>
CSP மற்றும் ஒற்றைப் பக்கப் பயன்பாடுகள் (SPAs)
SPAs பெரும்பாலும் ஜாவாஸ்கிரிப்ட் மற்றும் டைனமிக் குறியீடு உருவாக்கத்தை பெரிதும் நம்பியுள்ளன, இது CSP-ஐச் செயல்படுத்துவதை மிகவும் சவாலானதாக மாற்றும். CSP உடன் SPAs-ஐப் பாதுகாப்பதற்கான சில குறிப்புகள் இங்கே:
'unsafe-eval'பயன்படுத்துவதைத் தவிர்க்கவும்: SPAs பெரும்பாலும் டெம்ப்ளேட்டிங் என்ஜின்கள் அல்லதுeval()-ஐ நம்பியிருக்கும் பிற நுட்பங்களைப் பயன்படுத்துகின்றன. பதிலாக, முன் தொகுக்கப்பட்ட டெம்ப்ளேட்கள் போன்றeval()தேவைப்படாத மாற்று அணுகுமுறைகளைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளவும்.- இன்லைன் ஸ்கிரிப்ட்களுக்கு நான்ஸ்கள் அல்லது ஹாஷ்களைப் பயன்படுத்தவும்: SPAs பெரும்பாலும் ஜாவாஸ்கிரிப்ட் குறியீட்டை டைனமிக்காக செலுத்துகின்றன. நம்பகமான குறியீடு மட்டுமே செயல்படுத்தப்படுவதை உறுதி செய்ய நான்ஸ்கள் அல்லது ஹாஷ்களைப் பயன்படுத்தவும்.
connect-srcடைரக்டிவை கவனமாக உள்ளமைக்கவும்: SPAs பெரும்பாலும் பல்வேறு இறுதிப்புள்ளிகளுக்கு API கோரிக்கைகளைச் செய்கின்றன.connect-srcடைரக்டிவில் தேவையான டொமைன்களை மட்டும் ஏற்புப் பட்டியலில் சேர்ப்பதை உறுதி செய்யவும்.- CSP-விழிப்புணர்வுள்ள கட்டமைப்பைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளவும்: சில ஜாவாஸ்கிரிப்ட் கட்டமைப்புகள் CSP-க்கு உள்ளமைக்கப்பட்ட ஆதரவை வழங்குகின்றன, இது ஒரு பாதுகாப்பான கொள்கையைச் செயல்படுத்தவும் பராமரிக்கவும் எளிதாக்குகிறது.
CSP மற்றும் பன்னாட்டுமயமாக்கல் (i18n)
ஒரு உலகளாவிய பார்வையாளர்களுக்காக வலைப் பயன்பாடுகளை உருவாக்கும்போது, பன்னாட்டுமயமாக்கல் (i18n) மீது CSP-இன் தாக்கத்தைக் கருத்தில் கொள்வது முக்கியம். மனதில் கொள்ள வேண்டிய சில காரணிகள் இங்கே:
- உள்ளடக்க விநியோக நெட்வொர்க்குகள் (CDNs): உங்கள் இணையதளத்தின் சொத்துக்களை வழங்க நீங்கள் ஒரு CDN-ஐப் பயன்படுத்தினால், உங்கள் CSP-இல் CDN-இன் டொமைன்களை ஏற்புப் பட்டியலில் சேர்ப்பதை உறுதி செய்யவும். செயல்திறனை மேம்படுத்த வெவ்வேறு பிராந்தியங்களுக்கு வெவ்வேறு CDN-களைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளவும்.
- வெளிப்புற எழுத்துருக்கள்: நீங்கள் வெளிப்புற எழுத்துருக்களைப் பயன்படுத்தினால் (எ.கா., கூகிள் எழுத்துருக்கள்), உங்கள்
font-srcடைரக்டிவில் எழுத்துரு வழங்குநர்களின் டொமைன்களை ஏற்புப் பட்டியலில் சேர்ப்பதை உறுதி செய்யவும். - உள்ளூர்மயமாக்கப்பட்ட உள்ளடக்கம்: நீங்கள் வெவ்வேறு மொழிகள் அல்லது பிராந்தியங்களுக்கு உங்கள் இணையதளத்தின் வெவ்வேறு பதிப்புகளை வழங்கினால், ஒவ்வொரு பதிப்பிற்கும் உங்கள் CSP சரியாக உள்ளமைக்கப்பட்டுள்ளதா என்பதை உறுதி செய்யவும்.
- மூன்றாம் தரப்பு ஒருங்கிணைப்புகள்: நீங்கள் சில பிராந்தியங்களுக்கு குறிப்பிட்ட மூன்றாம் தரப்பு சேவைகளுடன் ஒருங்கிணைத்தால், அந்த சேவைகளின் டொமைன்களை உங்கள் CSP-இல் ஏற்புப் பட்டியலில் சேர்ப்பதை உறுதி செய்யவும்.
CSP சிறந்த நடைமுறைகள்: ஒரு உலகளாவிய பார்வை
ஒரு உலகளாவிய கண்ணோட்டத்தைக் கருத்தில் கொண்டு, CSP-ஐச் செயல்படுத்துவதற்கான சில பொதுவான சிறந்த நடைமுறைகள் இங்கே:
- ஒரு கட்டுப்பாடுள்ள கொள்கையுடன் தொடங்கவும்: இயல்பாக எல்லாவற்றையும் தடுக்கும் ஒரு கொள்கையுடன் தொடங்கி, பின்னர் நம்பகமான மூலங்களைத் தேர்ந்தெடுத்து இயக்கவும்.
- முதலில் ரிப்போர்ட்-ஒன்லி பயன்முறையைப் பயன்படுத்தவும்: சாத்தியமான சிக்கல்களை அடையாளம் காண உங்கள் CSP-ஐச் செயல்படுத்துவதற்கு முன்பு ரிப்போர்ட்-ஒன்லி பயன்முறையில் சோதிக்கவும்.
- CSP அறிக்கைகளைக் கண்காணிக்கவும்: சாத்தியமான பாதுகாப்பு பாதிப்புகளை அடையாளம் காணவும் உங்கள் கொள்கையைச் செம்மைப்படுத்தவும் CSP அறிக்கைகளைத் தவறாமல் மதிப்பாய்வு செய்யவும்.
- இன்லைன் ஸ்கிரிப்ட்களுக்கு நான்ஸ்கள் அல்லது ஹாஷ்களைப் பயன்படுத்தவும்:
'unsafe-inline'மற்றும்'unsafe-eval'பயன்படுத்துவதைத் தவிர்க்கவும். - உங்கள் மூலப் பட்டியல்களில் துல்லியமாக இருங்கள்: முற்றிலும் அவசியமில்லாவிட்டால் வைல்டு கார்டுகளை (
*) பயன்படுத்துவதைத் தவிர்க்கவும். - மூன்றாம் தரப்பு ஆதாரங்களுக்கு துணை ஆதார ஒருமைப்பாட்டை (SRI) பயன்படுத்தவும்: CDN-களிலிருந்து ஏற்றப்பட்ட கோப்புகளின் ஒருமைப்பாட்டைச் சரிபார்க்கவும்.
- உங்கள் CSP-ஐப் புதுப்பித்த நிலையில் வைத்திருக்கவும்: உங்கள் இணையதளம் மற்றும் சார்புகளில் ஏற்படும் மாற்றங்களைப் பிரதிபலிக்க உங்கள் CSP-ஐத் தவறாமல் மதிப்பாய்வு செய்து புதுப்பிக்கவும்.
- உங்கள் குழுவுக்குக் கல்வி கற்பிக்கவும்: உங்கள் டெவலப்பர்கள் மற்றும் பாதுகாப்பு குழு CSP-இன் முக்கியத்துவத்தையும் அதை எவ்வாறு சரியாகச் செயல்படுத்துவது என்பதையும் புரிந்துகொண்டுள்ளதை உறுதி செய்யவும்.
- ஒரு CSP ஜெனரேட்டர் அல்லது மேலாண்மை கருவியைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளவும்: இந்தக் கருவிகள் உங்கள் CSP-ஐ எளிதாக உருவாக்கவும் பராமரிக்கவும் உதவும்.
- உங்கள் CSP-ஐ ஆவணப்படுத்தவும்: எதிர்கால டெவலப்பர்கள் அதைப் புரிந்துகொண்டு பராமரிக்க உதவ உங்கள் CSP கொள்கையையும் ஒவ்வொரு டைரக்டிவிற்கும் பின்னணியில் உள்ள காரணங்களையும் ஆவணப்படுத்தவும்.
முடிவுரை
உள்ளடக்கப் பாதுகாப்பு கொள்கை என்பது XSS தாக்குதல்களைக் குறைப்பதற்கும் உங்கள் வலைப் பயன்பாடுகளின் பாதுகாப்பை மேம்படுத்துவதற்கும் ஒரு சக்திவாய்ந்த கருவியாகும். நம்பகமான மூலங்களின் ஏற்புப் பட்டியலை கவனமாக வரையறுப்பதன் மூலம், தீங்கிழைக்கும் குறியீடு செயலாக்கத்தின் அபாயத்தை நீங்கள் கணிசமாகக் குறைக்கலாம் மற்றும் உங்கள் பயனர்களைத் தீங்கிலிருந்து பாதுகாக்கலாம். CSP-ஐச் செயல்படுத்துவது சவாலானது, ஆனால் இந்தக் கட்டுரையில் கோடிட்டுக் காட்டப்பட்டுள்ள சிறந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலமும், உங்கள் பயன்பாடு மற்றும் உலகளாவிய பார்வையாளர்களின் குறிப்பிட்ட தேவைகளைக் கருத்தில் கொள்வதன் மூலமும், உங்கள் வலைத்தளத்தையும் பயனர்களையும் உலகளவில் பாதுகாக்கும் ஒரு வலுவான மற்றும் பயனுள்ள பாதுகாப்புக் கொள்கையை நீங்கள் உருவாக்கலாம்.
பாதுகாப்பு ஒரு தொடர்ச்சியான செயல்முறை என்பதை நினைவில் கொள்ளுங்கள், மேலும் CSP புதிரின் ஒரு பகுதி மட்டுமே. ஒரு விரிவான ஆழமான பாதுகாப்பு உத்தியை உருவாக்க, உள்ளீட்டு சரிபார்ப்பு, வெளியீட்டு குறியாக்கம் மற்றும் வழக்கமான பாதுகாப்பு தணிக்கைகள் போன்ற பிற பாதுகாப்பு நடவடிக்கைகளுடன் CSP-ஐ இணைக்கவும்.